home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / share / eselect / modules / mailer.eselect < prev    next >
Text File  |  2006-04-12  |  3KB  |  132 lines

  1. # Copyright 1999-2005 Gentoo Foundation
  2. # Distributed under the terms of the GNU General Public License v2
  3. # $Id: mailer.eselect 221 2005-10-18 00:45:54Z ka0ttic $
  4.  
  5. DESCRIPTION="Manage the mailwrapper profiles in /etc/mail"
  6. MAINTAINER="slarti@gentoo.org"
  7. SVN_DATE='$Date: 2005-10-18 01:45:54 +0100 (Tue, 18 Oct 2005) $'
  8. VERSION=$(svn_date_to_version "${SVN_DATE}")
  9.  
  10. # check we have /etc/mail
  11. check_dirs() {
  12.     if [[ ! -d ${ROOT}/etc/mail ]] ; then
  13.         die -q "/etc/mail does not exist, or is not a directory. Please fix."
  14.     fi
  15. }
  16.  
  17. # find a list of mailer.conf symlink targets
  18. find_targets() {
  19.     check_dirs
  20.     for f in ${ROOT}/etc/mail/*.mailer ; do
  21.         [[ -e ${f} ]] || continue
  22.         echo ${f##*/}
  23.     done
  24. }
  25.  
  26. # try to remove the mailer.conf symlink
  27. remove_symlink() {
  28.     check_dirs
  29.     rm "${ROOT}/etc/mail/mailer.conf"
  30. }
  31.  
  32. # set the mailer.conf symlink
  33. set_symlink() {
  34.     check_dirs
  35.     target=${1}
  36.     if is_number "${target}" ; then
  37.         targets=( $(find_targets ) )
  38.         target=${targets[$(( ${target} - 1 ))]%.mailer}
  39.     fi
  40.     if [[ -z ${target} ]] ; then
  41.         die -q "Target \"${1}\" doesn't appear to be valid!"
  42.     elif [[ -f "${ROOT}/etc/mail/${target}.mailer" ]] ; then
  43.         pushd "${ROOT}/etc/mail" 1>/dev/null
  44.         ln -s "${target}.mailer" "mailer.conf"
  45.         popd 1>/dev/null
  46.     else
  47.         die -q "Target \"${1}\" doesn't appear to be valid!"
  48.     fi
  49. }
  50.  
  51. ### show action ###
  52.  
  53. describe_show() {
  54.     echo "Show the current mailer.conf profile"
  55. }
  56.  
  57. do_show() {
  58.     check_dirs
  59.     write_list_start "Current mailer.conf profile:"
  60.     if [[ -L "${ROOT}/etc/mail/mailer.conf" ]] ; then
  61.         profile="$(readlink ${ROOT}/etc/mail/mailer.conf )"
  62.         write_kv_list_entry "${profile%.mailer}" ""
  63.     elif [[ -e "${ROOT}/etc/mail/mailer.conf" ]] ; then
  64.         write_kv_list_entry "(not a symlink)" ""
  65.     else
  66.         write_kv_list_entry "(unset)" ""
  67.     fi
  68. }
  69.  
  70. ### list action ###
  71.  
  72. describe_list() {
  73.     echo "List available mailer.conf profiles"
  74. }
  75.  
  76. do_list() {
  77.     check_dirs
  78.     targets=( $(find_targets ) )
  79.     targets=( ${targets[@]%.mailer} )
  80.     write_list_start "Available mailer.conf profiles:"
  81.     if [[ -n ${targets[@]} ]] ; then
  82.         local i
  83.         for (( i = 0 ; i < ${#targets[@]} ; i = i + 1 )) ; do
  84.             # any more elegant way to do this?
  85.             local profile
  86.             profile="$(readlink ${ROOT}/etc/mail/mailer.conf )"
  87.             [[ ${targets[${i}]} == ${profile%.mailer} ]] && \
  88.                 targets[${i}]="${targets[${i}]} $(highlight '*' )"
  89.             done
  90.             write_numbered_list "${targets[@]}"
  91.         else
  92.             write_kv_list_entry "(none found)" ""
  93.         fi
  94. }
  95.  
  96. ### set action ###
  97.  
  98. describe_set() {
  99.     echo "Set a new mailer.conf profile"
  100. }
  101.  
  102. describe_set_parameters() {
  103.     echo "<target>"
  104. }
  105.  
  106. describe_set_options() {
  107.     echo "target : Target name or number (from 'list' action)"
  108. }
  109.  
  110. do_set() {
  111.     check_dirs
  112.     if [[ -z ${1} ]] ; then
  113.         die -q "You didn't tell me what to set the profile to"
  114.  
  115.     elif [[ -L "${ROOT}/etc/mail/mailer.conf" ]] ; then
  116.         if ! remove_symlink ; then
  117.             die -q "Couldn't remove existing mailer.conf"
  118.         elif ! set_symlink "${1}" ; then
  119.             die -q "Couldn't set a new profile"
  120.         fi
  121.  
  122.     elif [[ -e "${ROOT}/etc/mail/mailer.conf" ]] ; then
  123.         # we have something strange
  124.         die -q "Sorry, ${ROOT}/etc/mail/mailer.conf confuses me"
  125.  
  126.     else
  127.         set_symlink "${1}" || die -q "Couldn't set a new symlink"
  128.     fi
  129. }
  130.  
  131. # vim: set ft=eselect :
  132.